The present invention provides a recycle mechanism in a processing agent to guard against data corruption.
As is known, certain processing agents may store data in internal caches. The caches store data for quick use by the agent. The cache stores data in cache lines, each having a predetermined width. However, the cache may furnish requested data in granularities smaller than an entire cache line. For example, the cache may furnish data in one-half or one-quarter cache line granularities.
The present invention protects against data corruption events that may occur when the core issues two requests alternately to different portions of a single cache line. When the requests are issued in quick succession, the first request may not complete before the second request is posted. If the requests each were processed independently, it would be possible for the agent to retrieve two copies of data from a single address and place the copies in different locations within the internal cache. A host of data corruption errors become possible when two copies of the same data are provided in two places in a single internal cache. For example, the agent could modify one of the copies. Thereafter, depending upon which copy were used the different values of the same data could cause the agent to behave differently.
Accordingly, there is a need in the art for a data management system in an agent that manages data and prevents the agent from storing two copies of the same data in different locations of the same cache.
An embodiment of the present invention provides a method of processing a data request in an agent in which the data request is posted internally within the agent and, when the data request implicates data associated with a pending external transaction, the data request is recycled.